
package com.zhike.common.dto;

import java.io.Serializable;

import com.google.gson.Gson;

/**
 * 消息"撤回"指令的信息元数据.
 * 
 * 注意：原本该类只用于客户端作为消息内容元数据对象（即com.zhike.rainbowchat.logic.chat_root.meta包中）
 * ，但由于服务端在处理聊天记录时也需要用到此对象，所以就提取到服务端了，不要觉得奇怪哦！
 *
 * @author JackJiang
 * @since 7.3
 */
public class RevokedMeta implements Serializable {

  /** "撤回"者的uid */
  protected String uid = null;
  /** "撤回"者的昵称 */
  protected String nickName = null;

  /**
   * 被"撤回"者的uid。
   * <p>
   * 注：用于群聊时，由管理员撤回其它群员消息时存入被撤回消息的发送者uid，其它余情况下本参数为空！
   */
  protected String beUid = null;
  /**
   * 被"撤回"者的昵称。
   * <p>
   * 注：用于群聊时，由管理员撤回其它群员消息时存入被撤回消息的发送者uid，其它余情况下本参数为空！
   */
  protected String beNickName = null;

  /** 将要被撤回的消息的指纹码（也就是唯一ID啦） */
  protected String fpForMessage = null;
  /** 未撤回前的原始消内容（当前仅用于文本消息时，用于撤回后的"重新编辑"功能时使用） */
  protected String originalContent = null;

  public RevokedMeta(String uid, String nickName, String fpForMessage) {
    this.uid = uid;
    this.nickName = nickName;
    this.fpForMessage = fpForMessage;
  }

  public void setUid(String uid) {
    this.uid = uid;
  }

  public void setNickName(String nickName) {
    this.nickName = nickName;
  }

  public String getUid() {
    return uid;
  }

  public String getNickName() {
    return nickName;
  }

  public String getBeUid() {
    return beUid;
  }

  public void setBeUid(String beUid) {
    this.beUid = beUid;
  }

  public String getBeNickName() {
    return beNickName;
  }

  public void setBeNickName(String beNickName) {
    this.beNickName = beNickName;
  }

  public String getFpForMessage() {
    return fpForMessage;
  }

  public void setFpForMessage(String fpForMessage) {
    this.fpForMessage = fpForMessage;
  }

  public String getOriginalContent() {
    return originalContent;
  }

  public RevokedMeta setOriginalContent(String originalContent) {
    this.originalContent = originalContent;
    return this;
  }

  @Override
  public String toString() {
    return "[uid=" + uid + ", nickName=" + nickName + ", beUid=" + beUid
        + ", beNickName=" + beNickName + ", fpForMessage=" + fpForMessage
        + ", originalContent=" + originalContent + "]";
  }

  public static RevokedMeta fromJSON(String jsonOfRevokedMeta) {
    return new Gson().fromJson(jsonOfRevokedMeta, RevokedMeta.class);
  }

  public static String toJSON(RevokedMeta meta) {
    return new Gson().toJson(meta);
  }
}
